package com.asialjim.wechat.official.message.wiki;

import com.asialjim.wechat.message.WeChatMessage;
import com.asialjim.wechat.message.output.WeChatOutputMessage;

/**
 * <h1><em>ASIAL JIM JAVA DOC</em></h1><hr/>
 * <h2>INTERFACE DESCRIPTION <i>[ NAME: MsgWikiFunction ]</i></h2><strong>
 * <p> 知识库功能
 * </strong><p><p><em>Copyright &copy; Asial Jim Co., LTD</em><hr/>
 *
 * @author Asial Jim &nbsp;&nbsp; <span>Email:<a href="mailto:asialjim@hotmail.com">asialjim@hotmail.com</a> &nbsp;&nbsp; <a href="asialjim@qq.com">asialjim@qq.com</a></span>
 * @version 1.0.0
 * @since 2021/3/24   &nbsp;&nbsp; JDK 8
 */
public interface MsgWikiFunction {

    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: execute ]</i></h3>
     * execute wiki function
     * @param callMessage {@link WeChatMessage call message from tencent}
     * @return {@link WeChatOutputMessage response message to user}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/3/25 10:41
     */
    WeChatOutputMessage execute(WeChatMessage callMessage);

    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: functionCnName ]</i></h3>
     * function chinese name
     * @return {@link String chinese name}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/3/25 10:40
     */
    String functionCnName();

    /**
     * <h3>METHOD DESCRIPTION <i>[ NAME: desc ]</i></h3>
     * function description
     * @return {@link String description}
     * @author Asial Jim &nbsp;&nbsp;<span>Email:asialjim@hotmail.com &nbsp;&nbsp; asialjim@qq.com</span>
     * @since 2021/3/25 10:41
     */
    default String desc(){
        return functionCnName();
    }
}
